home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1995…tember: Reference Library / Dev.CD Sep 95 RL / Dev.CD Sep 95 RL.toast / mac / Technical Documentation / develop / develop Issue 22 code / Futures / FutureShock / FutureShockDialog.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-04-14  |  3.9 KB  |  161 lines  |  [TEXT/MMCC]

  1. #ifndef __SETTYPESDIALOG__
  2. #define __SETTYPESDIALOG__
  3.  
  4. #ifndef __WINDOWHANDLER__
  5. #include "WindowHandler.h"
  6. #endif
  7.  
  8. class TAEvent;
  9. class TFutureShockDialogHandler;
  10.  
  11. void OpenFutureShockDialog();
  12. TFutureShockDialogHandler* GetFutureShockControl();
  13. Boolean ShouldResetTimer();
  14. Boolean ShouldForceError();
  15.  
  16. enum
  17. {
  18.     kStateNeverDrawn,
  19.     kStateShowTimeRemaining,
  20.     kStateEventDone,
  21.     kStateInLimbo
  22. };
  23.  
  24. struct __clientEventInfo
  25. {
  26.     long                fReturnID;
  27.     OSErr                fReturnResult;
  28. };
  29.  
  30. typedef struct __clientEventInfo ClientEventInfo;
  31.  
  32. struct __serverEventInfo
  33. {
  34.     long                fReturnID;
  35.     OSErr                fReturnResult;
  36.     long                fResetFrequency;
  37.     long                fPreviousNextReset;
  38.     unsigned long        fNextTimerReset;
  39.     long                fTotalEventProcessingTime;
  40.     long                fProcessingTimeRemaining;
  41. };
  42.  
  43. typedef struct __serverEventInfo ServerEventInfo;
  44.  
  45. struct __paneSlotState
  46. {
  47.     long                fLastState;
  48.     long                fLastReturnID;
  49.     long                fLastReturnResult;
  50. };
  51.  
  52. typedef struct __paneSlotState PaneSlotState;
  53.  
  54.  
  55. //
  56. // Data structure size constants and indicese
  57. //
  58. const long kClientEventStackSize = 20;
  59. const long kServerEventStackSize = 20;
  60. const long kMaxPaneSlots = 20;
  61.  
  62. class TPaneStateArray
  63. {
  64. public:
  65.                     TPaneStateArray();
  66.     Boolean            SetLastState(short whichSlot, long returnID, long returnResult, long newState, Rect& reportRect);
  67.  
  68. private:
  69.     PaneSlotState    fStateRecord[kMaxPaneSlots];
  70. };
  71.  
  72.  
  73.  
  74. //
  75. // Pixel sizes for elements in the dialog
  76. //
  77. const long kHeaderSpace = 4;
  78. const long kClientReportHeight = 40;
  79. const long kClientReportLeft = 10;
  80. const long kClientReportBarTop = 22;
  81.  
  82. const long kServerReportHeight = 40;
  83. const long kServerReportLeft = 10;
  84. const long kServerReportBarTop = 22;
  85.  
  86. const long kProgressWidth = 160;
  87. const long kProgressHeight = 10;
  88.  
  89. //
  90. // Item numbers for various elements in the dialog
  91. //
  92. enum
  93. {
  94.     kSendButton = 1,
  95.     kResetPeriodiclyRadio,
  96.     kAllowTimeoutRadio,
  97.     kForceErrorRadio,
  98.     kServerPane,
  99.     kClientPane,
  100.     kDottedLine = 9,
  101.     kFirstRadio = kResetPeriodiclyRadio,
  102.     kLastRadio = kForceErrorRadio
  103. };
  104.  
  105. class TFutureShockDialogHandler : public TModelessDialogHandler
  106. {
  107. public:
  108.                         TFutureShockDialogHandler() :
  109.                             fResetTimerPeriodicly(true),
  110.                             fForceEventToFail(false),
  111.                             fNumberRegisteredClientEvents(0),
  112.                             fNumberRegisteredServerEvents(0),
  113.                             fLastRedrawTick(0) {}
  114.                         
  115.     void                IFutureShockDialogHandler(DialogPtr dialog);
  116.     
  117.     virtual void        Idle(EventRecord* event);
  118.     virtual void        SetupMenus();
  119.     virtual Boolean        ProcessMenuSelection(short commandID);
  120.     virtual void        DialogManagerEvent(EventRecord* event, short itemHit);
  121.     virtual void        CloseWindowByUser();
  122.         
  123.     void                DrawClientServerPanes(short item, Boolean isUpdate);
  124.     void                DrawServerPane(Rect& paneLocation, Boolean isUpdate);
  125.     void                DrawClientPane(Rect& paneLocation, Boolean isUpdate);
  126.  
  127.     void                DrawProgressBar(short x, short y, long totalValue, long remainingValue);
  128.     void                DrawResetTimer(Rect& timerLocation, long totalValue, long remainingValue, Boolean eraseIt);
  129.  
  130.     long                FindClientEventIndex(long eventReturnID);
  131.     void                RegisterClientEvent(TAEvent& ae);
  132.     void                ClientEventComplete(TAEvent& ae, OSErr eventResult);
  133.  
  134.     long                FindServerEventIndex(long eventReturnID);
  135.     void                RegisterServerEvent(TAEvent& ae, long resetFrequency, long totalEventProcessingTime);
  136.     void                UpdateServerEventInfo(TAEvent& ae, unsigned long nextTimerReset, unsigned long processingTimeRemaining);
  137.     void                ServerEventComplete(TAEvent& ae, OSErr eventResult);
  138.  
  139.     long                SendTestMessage();
  140.     
  141.     Boolean                ResetTimerPeriodicly() { return fResetTimerPeriodicly; }
  142.     Boolean                ShouldForceError() { return fForceEventToFail; }
  143.     
  144. private:
  145.     Boolean                fResetTimerPeriodicly;
  146.     Boolean                fForceEventToFail;
  147.     long                fLastRedrawTick;
  148.     long                fNumberRegisteredClientEvents;
  149.     long                fNumberRegisteredServerEvents;
  150.     
  151.     ClientEventInfo        fClientEventInfo[kClientEventStackSize];
  152.     ServerEventInfo        fServerEventInfo[kClientEventStackSize];
  153.     
  154.     TPaneStateArray        fClientPaneState;
  155.     TPaneStateArray        fServerPaneState;
  156. };
  157.  
  158.  
  159. #endif
  160.  
  161.